{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*H2 ground state energy computation using Iterative QPE*_\n",
    "\n",
    "This notebook demonstrates computing and graphing the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using `IQPE` (Iterative Quantum Phase Estimation) algorithm. It is compared to the ground-truth energies as computed by the `NumPyMinimumEigensolver`.\n",
    "\n",
    "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires.\n",
    "\n",
    "First we define the `compute_energy` method, which contains the H2 molecule definition as well as the computation of its ground energy given the desired `distance` and `algorithm` (`i` is just a helper index for parallel computation to speed things up).\n",
    "\n",
    "Note that varying `num_iterations` (obviously) changes the result significantly. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import pylab\n",
    "import concurrent.futures\n",
    "import multiprocessing as mp\n",
    "import numpy as np\n",
    "from scipy.linalg import expm\n",
    "\n",
    "from qiskit.circuit.library import UnitaryGate\n",
    "from qiskit.circuit.classical import expr\n",
    "from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister\n",
    "from qiskit.visualization import plot_histogram\n",
    "from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager\n",
    "from qiskit_aer.primitives import Sampler\n",
    "\n",
    "from qiskit_nature.second_q.drivers import PySCFDriver\n",
    "from qiskit_nature.units import DistanceUnit\n",
    "from qiskit_nature.second_q.mappers import ParityMapper\n",
    "from qiskit_nature.second_q.algorithms import GroundStateEigensolver\n",
    "from qiskit_nature.second_q.circuit.library import HartreeFock\n",
    "\n",
    "from qiskit_algorithms import NumPyMinimumEigensolver\n",
    "from qiskit_algorithms import IterativePhaseEstimation\n",
    "\n",
    "from qiskit_ibm_runtime import QiskitRuntimeService"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Step 1: Map problem to quantum circuits and operators\n",
    "\n",
    "and execution on simulators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_energy(i, distance, algorithm):\n",
    "    driver = PySCFDriver(\n",
    "        atom=f'H .0 .0 .0; H .0 .0 {distance}',\n",
    "        unit=DistanceUnit.ANGSTROM,\n",
    "        charge=0,\n",
    "        spin=0,\n",
    "        basis='sto3g'\n",
    "    )\n",
    "\n",
    "    molecule = driver.run()\n",
    "    mapper = ParityMapper(num_particles=molecule.num_particles)\n",
    "    fer_op = molecule.hamiltonian.second_q_op()\n",
    "    tapered_mapper = molecule.get_tapered_mapper(mapper)\n",
    "    qubit_op = tapered_mapper.map(fer_op)\n",
    "\n",
    "    if algorithm == 'NumPyMinimumEigensolver':\n",
    "        algo = NumPyMinimumEigensolver()\n",
    "        algo.filter_criterion = molecule.get_default_filter_criterion()\n",
    "        solver = GroundStateEigensolver(mapper, algo)\n",
    "        result = solver.solve(molecule)\n",
    "        gs_energy = result.total_energies[0]\n",
    "        \n",
    "    elif algorithm == 'IQPE':\n",
    "        num_iterations = 12\n",
    "        state_in = HartreeFock(molecule.num_spatial_orbitals, molecule.num_particles, tapered_mapper)\n",
    "        sampler = Sampler()\n",
    "        iqpe = IterativePhaseEstimation(num_iterations, sampler)\n",
    "        U = UnitaryGate(expm(1j*qubit_op.to_matrix()))\n",
    "        result = 2 * np.pi * (iqpe.estimate(U, state_in).phase - 1)\n",
    "        gs_energy = result + molecule.nuclear_repulsion_energy\n",
    "    else:\n",
    "        raise ValueError(f'Unrecognized algorithm: {algorithm}')\n",
    "    return i, distance, gs_energy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " --- complete\n",
      "Distances:  [0.5   0.525 0.55  0.575 0.6   0.625 0.65  0.675 0.7   0.725 0.75  0.775\n",
      " 0.8   0.825 0.85  0.875 0.9   0.925 0.95  0.975 1.   ]\n",
      "Energies: [[-1.0554711  -1.07518932 -1.09339387 -1.10608043 -1.11681495 -1.12448177\n",
      "  -1.12943487 -1.13350975 -1.13543087 -1.13695502 -1.13674131 -1.13649191\n",
      "  -1.13481999 -1.13185487 -1.12771065 -1.12402239 -1.12087992 -1.11682938\n",
      "  -1.11194245 -1.10628349 -1.10144437]\n",
      " [-1.05515979 -1.07591366 -1.09262991 -1.10591805 -1.11628601 -1.12416092\n",
      "  -1.12990478 -1.13382622 -1.13618945 -1.13722138 -1.13711707 -1.13604436\n",
      "  -1.13414767 -1.13155121 -1.12836188 -1.12467175 -1.12056028 -1.11609624\n",
      "  -1.11133942 -1.10634211 -1.10115033]]\n",
      "--- 20.08198094367981 seconds ---\n"
     ]
    }
   ],
   "source": [
    "algorithms = ['IQPE', 'NumPyMinimumEigensolver']\n",
    "start = 0.5  # Start distance\n",
    "by    = 0.5  # How much to increase distance by\n",
    "steps = 20   # Number of steps to increase by\n",
    "energies = np.empty([len(algorithms), steps+1])\n",
    "distances = np.empty(steps+1)\n",
    "\n",
    "start_time = time.time()\n",
    "max_workers = max(4, mp.cpu_count())\n",
    "\n",
    "with concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) as executor:\n",
    "    futures = []\n",
    "    for j in range(len(algorithms)):\n",
    "        algorithm = algorithms[j]\n",
    "        for i in range(steps+1):\n",
    "            d = start + i*by/steps\n",
    "            future = executor.submit(\n",
    "                compute_energy, \n",
    "                i, \n",
    "                d, \n",
    "                algorithm\n",
    "            )\n",
    "            futures.append(future)\n",
    "        for future in concurrent.futures.as_completed(futures):\n",
    "            i, d, energy = future.result()\n",
    "            energies[j][i] = energy\n",
    "            distances[i] = d\n",
    "\n",
    "print(' --- complete')\n",
    "\n",
    "print('Distances: ', distances)\n",
    "print('Energies:', energies)\n",
    "\n",
    "print(\"--- %s seconds ---\" % (time.time() - start_time))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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pZeX1w1fEdmvXz8ee+wxDh06RHJyMqtXr+bdd9+9odcUyS6VJZEC5LvvvuO+++6je/fuvPfee9e9XpcuXRg/fjwzZsy44pVgWXGpSOzcufOyPRE7d+7MUDSCg4Odh9D+7dIeouy+96U9If997xtRv359fvrpJ44ePUqZMmUyHLb6txUrVnD69GlmzZrFTTfd5Jy+d+/ey5a92mtUqFCBTZs20bZt26suk5cqVKgAQIkSJa57b9V/lSlTBofDwd69ezPs+fvrr7+uuHyvXr144okn+OKLL7hw4QIeHh7ceeed2XpvkRulc5ZECoiff/6ZXr16cdNNNzFjxows/WXfrFkz2rdvz0cffcR33313xWWud+9N/fr1KVGiBBMnTsxwmfv8+fPZvn17hqufKlSowI4dOzJcpr5p0yZWrlx53dn/LTw8nDp16jB16tQMh7sWL17Mtm3brrn+sWPHrrhcSkoKS5cuxWazOQ8DXRo36Ny5cxmWvbSX5t/bKyUlhffff/+y1/Xz87viYbmePXty+PBhPv7448vmXbhwgcTExGt+lpwUExNDQEAAL7/88hWvxLye8adiYmIALtsO77zzzhWXL168OJ06dWL69OnMmDGDjh07XvOqTpHcoj1LIgXA/v37ufXWWzEMgzvuuINvvvkmw/xatWpd86Tw6dOn07FjR7p27UqnTp1o164dwcHBzhG8f/75Zzp16nTNLB4eHrzyyisMHDiQli1bctdddzmHDihbtixDhw51LnvPPffw5ptvEhMTw7333suJEyeYOHEi1atXv+xcn+s1btw4OnfuTPPmzbnnnns4c+YM77zzDtWrVychISHTdQ8dOkTDhg1p06YNbdu2JSwsjBMnTvDFF1+wadMmHn/8cecXdp06dXBzc+OVV14hLi4OLy8v2rRpQ9OmTQkODqZ///48+uijGIbBZ599dsWyWa9ePb766iueeOIJGjRoQJEiRbjlllvo27cvX3/9NYMHD2b58uU0a9YMu93Ojh07+Prrr1m4cOEVz2X7t7S0NKZPn37Fed26dcvSIJEBAQF88MEH9O3bl7p169KrVy9CQkI4cOAA8+bNo1mzZtc8RFavXj1uv/12JkyYwOnTp51DB+zatQu48l62fv36cccddwDpQ1SIWMbKS/FE5MouXdK9du3aK85v2bJlhqEDLl3Gf7XH9V5ufeHCBXPChAlmkyZNzICAANPd3d0MCwszu3TpYs6YMcNMS0u77D2/+eabK77WV199ZUZHR5teXl5m0aJFzT59+piHDh26bLnp06eb5cuXNz09Pc06deqYCxcuvOrQAa+99tpl61/p882cOdOMiooyvby8zGrVqpmzZs267DWvJD4+3vy///s/MyYmxixVqpTp4eFh+vv7m02aNDE//vjjDJfXm6Zpfvzxx2b58uVNNze3DMMIrFy50mzcuLHp4+NjRkREmMOGDTMXLlx42VADCQkJZu/evc2goKDLhjZISUkxX3nlFbN69eqml5eXGRwcbNarV88cPXq0GRcXl+nnyGzoAMDcu3evaZpX/z279LP977AIy5cvN2NiYszAwEDT29vbrFChgjlgwABz3bp1Gd7bz8/virkSExPNIUOGmEWLFjWLFClidu3a1dy5c6cJmOPHj79s+eTkZDM4ONgMDAzMMAyFSF4zTDOXzowUERG5htjYWKKjo5k+fXqGEeIhfe9YREQEt9xyC5MmTbIooYjOWRIRkTxy4cKFy6ZNmDABm82W4WT4S+bMmcPJkyfp169fXsQTuSqdsyQiInni1VdfZf369bRu3Rp3d3fmz5/P/PnzGTRoUIbhENasWcMff/zB2LFjiY6OpmXLlhamFgEdhhMRkTyxePFiRo8ezbZt20hISKB06dL07duX559/PsNYTQMGDGD69OnUqVOHKVOmOAdGFbGKypKIiIhIJnTOkoiIiEgmVJZEREREMqETvHOAw+HgyJEj+Pv754tbE4iIiMi1mabJ+fPniYiIyPSuBypLOeDIkSM5fmNLERERyRsHDx6kVKlSV52vspQD/P39gfSNHRAQYHEaERERuR7x8fFERkY6v8evRmUpB1w69BYQEKCyJCIi4mKudQqNTvAWERERyYTKkoiIiEgmVJZEREREMqFzlkRErsLhcJCSkmJ1DBHJJg8PD9zc3G74dVSWRESuICUlhb179+JwOKyOIiI3ICgoiLCwsBsaB1FlSUTkP0zT5OjRo7i5uREZGZnpYHUikj+ZpklSUhInTpwAIDw8PNuvpbIkIvIfaWlpJCUlERERga+vr9VxRCSbfHx8ADhx4gQlSpTI9iE5/bkkIvIfdrsdAE9PT4uTiMiNuvQHT2pqarZfQ2VJROQqdK9HEdeXE/8dqyyJiIiIZEJlSURERCQT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6rKmadKpUycMw2DOnDk5kllERERcn8uUpZSUFHr06MGDDz543eskJibSvHlzXnnllWsuO2HCBAxDN6oUERGRjFxmnKXRo0cDMGXKlOtep2/fvgDs27cv0+ViY2N54403WLduHeHh4dmNKCIiIgWQy5Sl3JKUlETv3r157733CAsLu651kpOTSU5Odj6Pj4/PrXgiIiJiMZc5DJdbhg4dStOmTbntttuue51x48YRGBjofERGRuZiQhEREbGSpWXp2WefxTCMTB87duzItfefO3cuy5YtY8KECVlab/jw4cTFxTkfBw8ezJ2AIiIiYjlLD8M9+eSTDBgwINNlypcvn2vvv2zZMnbv3n3Z1XW33347LVq0YMWKFVdcz8vLCy8vr1zLJSIiIvmHpWUpJCSEkJAQy97/2Wef5b777sswrWbNmrz11lvccsstFqUSERGR/MRlTvA+cOAAZ86c4cCBA9jtdueYSRUrVqRIkSIAVK1alXHjxtGtWzcA5/JHjhwBYOfOnQCEhYVlePxX6dKlKVeuXB58KhEREcnvXKYsjRgxgqlTpzqfR0dHA7B8+XJatWoFpJehuLg45zJz585l4MCBzue9evUCYOTIkYwaNSrHspmmCeiqOBEREVdy6Xv70vf41RjmtZaQazp06JCuiBMREXFRBw8epFSpUledr7KUAxwOB0eOHMHf3z9HRwGPj48nMjKSgwcPEhAQkGOvK5fTts4b2s55Q9s5b2g7543c3M6maXL+/HkiIiKw2a4+QIDLHIbLz2w2W6aN9EYFBAToP8Q8om2dN7Sd84a2c97Qds4bubWdAwMDr7lMoR+UUkRERCQzKksiIiIimVBZyse8vLwYOXKkBsDMA9rWeUPbOW9oO+cNbee8kR+2s07wFhEREcmE9iyJiIiIZEJlSURERCQTKksiIiIimVBZEhEREcmEypLF3nvvPcqWLYu3tzeNGjXi999/v+qyU6ZMwTCMDA9vb+88TOu6srKdAc6dO8eQIUMIDw/Hy8uLypUr8+OPP+ZRWteWlW3dqlWry36nDcOgc+fOeZjYNWX1d3rChAlUqVIFHx8fIiMjGTp0KBcvXsyjtK4rK9s5NTWVMWPGUKFCBby9valduzYLFizIw7Su6eeff+aWW24hIiICwzCYM2fONddZsWIFdevWxcvLi4oVKzJlypTcDWmKZb788kvT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6gAiIqmpqXh4eFgdIwM3N7er3l0+p/j4+OTaXdJFJOdoz5KIXFGrVq149NFHGTZsGEWLFiUsLIxRo0Y555ctWxaAbt26YRiG8znAd999R926dfH29qZ8+fKMHj2atLQ053zDMPjggw+49dZb8fPz46WXXsJut3PvvfdSrlw5fHx8qFKlCv/3f//nXGfUqFFMnTqV7777DsMwMAyDFStWALB582batGmDj48PxYoVY9CgQSQkJDjXvbRH6uWXXyY0NJSgoCDGjBlDWloaTz/9NEWLFqVUqVJMnjzZuc6VDsNt3bqVLl26EBAQgL+/Py1atGD37t1X3YY//vgjlStXxsfHh9atW7Nv374M8/+7t2jTpk20bt0af39/AgICqFevHuvWrWPFihUMHDiQuLg452e/9LP47LPPqF+/Pv7+/oSFhdG7d29OnDjhfM1Lh/6WLl1K/fr18fX1pWnTpuzcuTNDlu+//54GDRrg7e1N8eLF6datm3NecnIyTz31FCVLlsTPz49GjRo5t71IoZCrd54TEZfRv39/87bbbnM+b9mypRkQEGCOGjXK3LVrlzl16lTTMAznDW9PnDhhAubkyZPNo0ePmidOnDBN0zR//vlnMyAgwJwyZYq5e/duc9GiRWbZsmXNUaNGOV8bMEuUKGF++umn5u7du839+/ebKSkp5ogRI8y1a9eae/bsMadPn276+vqaX331lWma6Xcm79mzp9mxY0fz6NGj5tGjR83k5GQzISHBDA8PN7t3725u3rzZXLp0qVmuXLkMNzjt37+/6e/vbw4ZMsTcsWOHOWnSJBMwY2JizJdeesnctWuXOXbsWNPDw8M8ePCgaZqmuXfvXhMwN27caJqmaR46dMgsWrSo2b17d3Pt2rXmzp07zU8//dTcsWPHFbfngQMHTC8vL/OJJ54wd+zYYU6fPt0MDQ01AecNbCdPnmwGBgY616levbp59913m9u3bzd37dplfv3112ZsbKyZnJxsTpgwwQwICHB+9vPnz5umaZqTJk0yf/zxR3P37t3mqlWrzCZNmpidOnVyvualm5Q2atTIXLFihbl161azRYsWZtOmTZ3L/PDDD6abm5s5YsQIc9u2bWZsbKz58ssvO+ffd999ZtOmTc2ff/7Z/Ouvv8zXXnvN9PLyMnft2nU9v1oiLk9lSURM07xyWWrevHmGZRo0aGA+88wzzueAOXv27AzLtG3bNsMXrWma5meffWaGh4dnWO/xxx+/ZqYhQ4aYt99++1UzmqZpfvTRR2ZwcLCZkJDgnDZv3jzTZrOZx44dc65XpkwZ0263O5epUqWK2aJFC+fztLQ008/Pz/ziiy9M07y8LA0fPtwsV66cmZKScs3cl5avVq1ahmnPPPNMpmXJ39/fnDJlyhVf77/LXs3atWtNwFmmLpWlJUuWOJeZN2+eCZgXLlwwTdM0mzRpYvbp0+eKr7d//37Tzc3NPHz4cIbpbdu2NYcPH37NPCIFgc5ZEpGrqlWrVobn4eHhGQ7xXMmmTZtYuXIlL730knOa3W7n4sWLJCUl4evrC0D9+vUvW/e9997j008/5cCBA1y4cIGUlBTq1KmT6ftt376d2rVr4+fn55zWrFkzHA4HO3fuJDQ0FIDq1atjs/1z5kFoaGiGk7fd3NwoVqzYVT9fbGwsLVq0uO5zq7Zv306jRo0yTGvSpEmm6zzxxBPcd999fPbZZ7Rr144ePXpQoUKFTNdZv349o0aNYtOmTZw9exaHwwHAgQMHqFatmnO5f/8sw8PDAThx4gSlS5cmNjaW+++//4qvv3nzZux2O5UrV84wPTk5mWLFimWaTaSgUFkSkav6bzEwDMP5ZXw1CQkJjB49mu7du182z9vb2/n//11uAL788kueeuop3njjDZo0aYK/vz+vvfYaa9asuYFP8I8rfZasfL68OBF71KhR9O7dm3nz5jF//nxGjhzJl19+meH8oX9LTEwkJiaGmJgYZsyYQUhICAcOHCAmJoaUlJQMy/77sxqGAeD8rJl9toSEBNzc3Fi/fj1ubm4Z5hUpUiRbn1PE1agsiUi2eXh4YLfbM0yrW7cuO3fupGLFill6rZUrV9K0aVMeeugh57T/njzt6el52ftFRUUxZcoUEhMTnQVs5cqV2Gw2qlSpkqUMmalVqxZTp0697iv3oqKimDt3boZpq1evvuZ6lStXpnLlygwdOpS77rqLyZMn061btyt+9h07dnD69GnGjx9PZGQkAOvWrcvCp0pXq1Ytli5dysCBAy+bFx0djd1u58SJE7Ro0SLLry1SEOhqOBHJtrJly7J06VKOHTvG2bNnARgxYgTTpk1j9OjRbN26le3bt/Pll1/ywgsvZPpalSpVYt26dSxcuJBdu3bx4osvsnbt2sve748//mDnzp2cOnWK1NRU+vTpg7e3N/3792fLli0sX76cRx55hL59+zoPweWEhx9+mPj4eHr16sW6dev4888/+eyzzy67quySwYMH8+eff/L000+zc+dOPv/8c6ZMmXLV179w4QIPP/wwK1asYP/+/axcuZK1a9cSFRXl/OwJCQksXbqUU6dOkZSUROnSpfH09OSdd95hz549zJ07l7Fjx2b5s40cOZIvvviCkSNHsn37djZv3swrr7wCpJe3Pn360K9fP2bNmsXevXv5/fffGTduHPPmzcvye4m4IpUlEcm2N954g8WLFxMZGUl0dDQAMTEx/PDDDyxatIgGDRrQuHFj3nrrLcqUKZPpaz3wwAN0796dO++8k0aNGnH69OkMe5kA7r//fqpUqUL9+vUJCQlh5cqV+Pr6snDhQs6cOUODBg244447aNu2Le+++26OftZixYqxbNkyEhISaNmyJfXq1ePjjz++6l6m0qVLM3PmTObMmUPt2rWZOHEiL7/88lVf383NjdOnT9OvXz8qV65Mz5496dSpE6NHjwagadOmDB48mDvvvJOQkBBeffVVQkJCmDJlCt988w3VqlVj/PjxvP7661n+bK1ateKbb75h7ty51KlThzZt2vD7778750+ePJl+/frx5JNPUqVKFbp27cratWspXbp0lt9LxBUZpmmaVocQERERya+0Z0lEREQkEypLIiIiIplQWRIRERHJhMqSiIiISCZUlkREREQyobIkIiIikgmVJREREZFMqCyJiIiIZEJlSURERCQTKksiIiIimVBZEhEREcmEypKIiIhIJv4fUDDQuCOz6xAAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for j in range(len(algorithms)):\n",
    "    pylab.plot(distances, energies[j], label=algorithms[j])\n",
    "pylab.xlabel('Interatomic distance')\n",
    "pylab.ylabel('Energy')\n",
    "pylab.title('H2 Ground State Energy')\n",
    "pylab.legend(loc='upper right')\n",
    "pylab.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bond distance (NPME): 0.725 A, energy: -1.137 Ha\n",
      "Bond distance (no IQPE): 0.725 A, energy: -1.137 Ha\n"
     ]
    }
   ],
   "source": [
    "print(f\"\"\"Bond distance (NPME): {distances[np.argmin(energies[1])]:.3f} A, energy: {min(energies[1]):.3f} Ha\n",
    "Bond distance (no IQPE): {distances[np.argmin(energies[0])]:.3f} A, energy: {min(energies[0]):.3f} Ha\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Step 2: Optimize for target hardware\n",
    "\n",
    "I will demonstrate just one execution, at bond distance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "driver = PySCFDriver(\n",
    "    atom=f'H .0 .0 .0; H .0 .0 0.73',\n",
    "    basis='sto3g'\n",
    ")\n",
    "\n",
    "molecule = driver.run()\n",
    "mapper = ParityMapper(num_particles=molecule.num_particles)\n",
    "fer_op = molecule.hamiltonian.second_q_op()\n",
    "tapered_mapper = molecule.get_tapered_mapper(mapper)\n",
    "qubit_op = tapered_mapper.map(fer_op)\n",
    "\n",
    "num_iterations = 4\n",
    "state_in = HartreeFock(molecule.num_spatial_orbitals, molecule.num_particles, tapered_mapper)\n",
    "sampler = Sampler()\n",
    "U = UnitaryGate(expm(1j*qubit_op.to_matrix()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def x_measurement(qc, qubit, cbit):\n",
    "    \"\"\"Measure 'qubit' in the X-basis, and store the result in 'cbit'\"\"\"\n",
    "    qc.h(qubit)\n",
    "    qc.measure(qubit, cbit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "q = QuantumRegister(2, name='q')\n",
    "c = ClassicalRegister(num_iterations, name='res')\n",
    "circuit = QuantumCircuit(q, c)\n",
    "\n",
    "for k in range(1, num_iterations+1):\n",
    "    circuit.reset(0)\n",
    "    circuit.h(0)\n",
    "\n",
    "    conditions = [expr.lift(c[j]) for j in range(0, k-1)] # phase correction conditions\n",
    "\n",
    "    for j, cond in enumerate(conditions):\n",
    "        with circuit.if_test(cond):\n",
    "            circuit.p(-np.pi/(2**(len(conditions) - j)), 0) # phase correction\n",
    "    \n",
    "    cu = U.power(2**(num_iterations-k)).control(1, f'c-U^{2**(num_iterations-k)}')\n",
    "    circuit.compose(cu, inplace=True)\n",
    "    x_measurement(circuit, q[0], c[k-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ibm_sherbrooke\n"
     ]
    }
   ],
   "source": [
    "\n",
    "service = QiskitRuntimeService(channel=\"ibm_quantum\")\n",
    "backend = service.least_busy(operational=True, simulator=False, dynamic_circuits=True, use_fractional_gates=False)\n",
    "print(backend.name)\n",
    "target = backend.target\n",
    "pm = generate_preset_pass_manager(target=target, optimization_level=3)\n",
    "\n",
    "isa_circuit = pm.run(circuit)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Step 3: Execute on target hardware"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_ibm_runtime import SamplerV2\n",
    "sampler = SamplerV2(mode=backend)\n",
    "\n",
    "job = sampler.run([isa_circuit])\n",
    "\n",
    "id = job.id\n",
    "print(id)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Step 4: Post-process results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DQ3FunXrsHXrVlhZWWnWENnY2MDCwgI2NjYYPnw4wsLCUK1aNVhbW+Ojjz6Cv78/WrZsCQAIDAyEl5cXhgwZgvnz5yM5ORlTpkxBaGio5mzQqFGj8N133+HTTz/Fe++9h4iICGzcuBE7duj2qQoiIiIqX8rcmaTly5cjIyMDHTp0gJOTk+Zrw4YNmj6LFy9Gjx490LdvX7Rr1w6Ojo74+++/NccVCgXCw8OhUCjg7++Pd955ByEhIfjiiy80fdzd3bFjxw7s3bsXTZo0wcKFC/HTTz8hKCioVOdLREREZVOZXrhdlnGfJCKiksF9kqgkFef1u8ydSSIiIiIqCxiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCSUuZAUGRmJnj17wtnZGTKZDFu2bNE6/u6770Imk2l9de3aVatPWloaBg8eDGtra1StWhXDhw9HVlaWVp8zZ86gbdu2qFSpElxcXDB//vySnhoREREZkTIXkrKzs9GkSRMsW7bsmX26du2KpKQkzdf69eu1jg8ePBjnzp3D3r17ER4ejsjISIwcOVJzPDMzE4GBgXBzc0NMTAwWLFiAGTNm4McffyyxeREREZFxMTH0AJ7WrVs3dOvW7bl9zM3N4ejoKHnswoUL2LVrF06cOIHXX38dALB06VJ0794dX3/9NZydnfH7778jPz8fP//8M8zMzODt7Y3Y2FgsWrRIK0wRERFRxVXmQtLLOHjwIBwcHGBra4tOnTrhq6++gp2dHQAgKioKVatW1QQkAAgICIBcLsexY8fwxhtvICoqCu3atYOZmZmmT1BQEObNm4cHDx7A1ta2SM28vDzk5eVpvs/MzAQAFBQUoKCgAAAgl8uhUCigVCqhUqk0fdXthYWFEEJo2hUKBeRy+TPb1ferZmLy+OEqLCx8qXZTU1OoVCoolUpNm0wmg4mJyTPbnzV2zolz4pw4J0PMqTgKCgqMYk7l8XEytjm9LKMLSV27dsWbb74Jd3d3XL16FZ999hm6deuGqKgoKBQKJCcnw8HBQes2JiYmqFatGpKTkwEAycnJcHd31+pTo0YNzTGpkDRnzhzMnDmzSPuePXtQuXJlAICrqyt8fHxw5swZ3Lp1S9PHw8MDnp6eOH78OO7du6dpb9q0Kdzc3BAZGYmHDx9q2v39/eHg4IA9e/ZoPZgdO3aEhYUFdu7cqTWG7t2749GjRzhw4IDWnIODg5GamoqoqChNu5WVFTp16oSEhATExsZq2u3t7dGqVStcvnwZ8fHxmnbOiXPinDin0p6Trvbs2VNm51QeHydjndORI0fwsmTiyZhVxshkMmzevBl9+vR5Zp9r166hTp062LdvHzp37ozZs2dj7dq1Wj9IAHBwcMDMmTMxevRoBAYGwt3dHStWrNAcP3/+PLy9vXH+/Hk0aNCgSB2pM0kuLi5ITU2FtbU1ACZ1zolz4pw4J33Mqd5U3YLS5S8Dy+ycnlReHidjnVNaWhrs7OyQkZGhef1+FqM7k/S02rVro3r16rhy5Qo6d+4MR0dH3L17V6tPYWEh0tLSNOuYHB0dkZKSotVH/f2z1jqZm5vD3Ny8SLupqSlMTU212hQKBRQKRZG+6ifLy7Y/fb+6tMvlcsjlRdfnP6v9WWPnnDin4rZzTpwToL85vQz1bY1lTuXxcTLmOUkpc59uK67bt2/j/v37cHJyAvD4VGB6ejpiYmI0fSIiIqBSqeDn56fpExkZqZWE9+7dCw8PD8m32oiIiKjiKXMhKSsrC7GxsZr3I69fv47Y2FjcunULWVlZmDBhAqKjo3Hjxg3s378fvXv3Rt26dREUFAQAaNCgAbp27YoRI0bg+PHjOHLkCMaMGYOBAwfC2dkZAPD222/DzMwMw4cPx7lz57BhwwZ88803CAsLM9S0iYiIqIwpcyHp5MmT8PHxgY+PDwAgLCwMPj4+mDZtGhQKBc6cOYNevXqhfv36GD58OJo3b45///1X662w33//HZ6enujcuTO6d++ONm3aaO2BZGNjgz179uD69eto3rw5/ve//2HatGn8+D8RERFplOmF22VZZmYmbGxsXmrhFxERvbxak3bodLsbc4P1PBIqj4rz+l3mziQRERERlQUMSUREREQSGJKIiIiIJDAkEREREUlgSCIiIiKSwJBEREREJIEhiYiIiEgCQxIRERGRBIYkIiIiIgkMSUREREQSGJKIiIiIJDAkEREREUlgSCIiIiKSwJBEREREJIEhiYiIiEgCQxIRERGRBJ1DUmRkJG7duvXcPgkJCYiMjNS1BBEREZHB6BySOnbsiDVr1jy3zy+//IKOHTvqWoKIiIjIYHQOSUKIF/ZRqVSQyWS6liAiIiIymBJdk3T58mXY2NiUZAkiIiKiEmFSnM7vvfee1vdbtmzBjRs3ivRTKpWa9UjdunV7pQESERERGUKxQtKTa5BkMhliY2MRGxsr2Vcmk8HX1xeLFy9+lfERERERGUSxQtL169cBPF6PVLt2bYwdOxaffPJJkX4KhQK2trawtLTUzyiJiIiISlmxQpKbm5vm36tXr4aPj49WGxEREVF5UayQ9KShQ4fqcxxEREREZYrOIUnt+PHjOHHiBNLT06FUKoscl8lkmDp16quWISIiIipVOoektLQ09OnTB0eOHHnunkkMSURERGSMdA5JYWFhOHz4MDp06IChQ4eiZs2aMDF55RNTRERERGWCzqkmPDwcLVq0wP79+7mrNhEREZU7Ou+4/ejRI7Rr144BiYiIiMolnUNS06ZNJXfbJiIiIioPdA5J06dPx7Zt2xAdHa3P8RARERGVCTqvSUpOTkZwcDDat2+PwYMHo1mzZrC2tpbsGxISovMAiYiIiAxBJp73+f3nkMvlkMlkWh//f3p9khACMplMcv8kY5eZmQkbGxtkZGQ8MxwSEVHx1Zq0Q6fb3ZgbrOeRUHlUnNdvnc8krV69WtebEhEREZV5vCwJERERkQSdF24TERERlWc6n0m6devWS/d1dXXVtQwRERGRQegckmrV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DElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiIiksCQRERERCSBIYmIiIhIAkMSERERkQSGJCIiIiIJDElEREREEhiSiIiIiCQwJBERERFJYEgiIiKiEjF37lzIZDKMHTtW05acnIwhQ4bA0dERlpaWaNasGf766y+t2126dAm9e/dG9erVYW1tjTZt2uDAgQOlPHqGJCIiIioBJ06cwIoVK9C4cWOt9pCQEMTHx2Pbtm2Ii4vDm2++iQEDBuD06dOaPj169EBhYSEiIiIQExODJk2aoEePHkhOTi7VOTAkERERkV5lZWVh8ODBWLlyJWxtbbWOHT16FB999BFatGiB2rVrY8qUKahatSpiYmIAAKmpqbh8+TImTZqExo0bo169epg7dy5ycnJw9uzZUp0HQxIRERHpVWhoKIKDgxEQEFDkWKtWrbBhwwakpaVBpVLhjz/+QG5uLjp06AAAsLOzg4eHB3755RdkZ2ejsLAQK1asgIODA5o3b16q8zAp1WpERERUrv3xxx84deoUTpw4IXl848aNeOutt2BnZwcTExNUrlwZmzdvRt26dQEAMpkM+/btQ58+fWBlZQW5XA4HBwfs2rWryFmpksYzSURERKQXCQkJ+OSTT/D777+jUqVKkn2mTp2K9PR07Nu3DydPnkRYWBgGDBiAuLg4AIAQAqGhoXBwcMC///6L48ePo0+fPujZsyeSkpJKczqQCSFEqVYsJzIzM2FjY4OMjAxYW1sbejhEROVGrUk7dLrdjbnBeh4JFdeWLVvwxhtvQKFQaNqUSiVkMhnkcjni4+NRt25dnD17Ft7e3po+AQEBqFu3Ln744Qfs378fgYGBePDggdbra7169TB8+HBMmjTplcZYnNdvvt1GREREetG5c2fNGSG1YcOGwdPTExMnTkROTg4AQC7XfiNLoVBApVIBwDP7yOVyTZ/SwpBEREREemFlZYWGDRtqtVlaWsLOzg4NGzZEQUEB6tatiw8++ABff/017OzssGXLFuzduxfh4eEAAH9/f9ja2mLo0KGYNm0aLCwssHLlSly/fh3BwaV7tpBrkoiIiKhUmJqaYufOnbC3t0fPnj3RuHFj/PLLL1i7di26d+8OAKhevTp2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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job_result = job.result()\n",
    "counts = job_result[0].data.res.get_counts()\n",
    "plot_histogram(counts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IQPE estimate: -1.96. Exact minimum eigenvalue: (-1.8621859655286148+0j)\n"
     ]
    }
   ],
   "source": [
    "max_key, max_value = max(counts.items(), key=lambda x: x[1])\n",
    "\n",
    "phi = int(max_key, 2) / 16\n",
    "\n",
    "print(f'IQPE estimate: {2*np.pi * (phi - 1):.2f}. Exact minimum eigenvalue: {np.linalg.eig(qubit_op.to_matrix())[0][0]}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can easily see that this is the best possible result with 4 bits: both 1010 and 1100 give results further away from the real eigenvalue."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "qiskit==1.2.0\n",
      "qiskit-aer==0.15.0\n",
      "qiskit-algorithms==0.3.0\n",
      "qiskit-ibm-runtime==0.31.0\n",
      "qiskit-machine-learning==0.7.2\n",
      "qiskit-nature==0.7.2\n",
      "qiskit-nature-pyscf==0.4.0\n",
      "qiskit-qasm3-import==0.5.0\n",
      "qiskit-transpiler-service==0.4.5\n"
     ]
    }
   ],
   "source": [
    "! pip freeze | grep qiskit"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "qss",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
